program Project1; // Zadanie 6.2

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
trojmian=class
  a, b, c, delta, x1, x2: Real;
  Liczba_Pierwiastkow: Byte;
  procedure czytaj_dane();
  procedure przetworz_dane();
  procedure wyswietl_wynik();
end;

procedure trojmian.czytaj_dane();
begin
  Writeln('Program oblicza pierwiastki rownania kwadratowego dla dowolnych wspolczynnikow a, b, c');
  Writeln('Podaj a.');
  Readln(a);
    if (a = 0) then
      begin
        Writeln('Niedozwolona wartosc wspolczynnika a. Nacisnij klawisz Enter.');
        Readln; // czeka na nacisniecie klawisza Enter
        Exit();  // wyjscie z programu
      end
    else
      begin
        Writeln('Podaj b.');
        Readln(b);
        Writeln('Podaj c.');
        Readln(c);
      end;
end;

procedure trojmian.przetworz_dane();
begin
  delta:= b*b-4*a*c;
  if delta < 0 then Liczba_Pierwiastkow := 0;
  if delta = 0 then Liczba_Pierwiastkow := 1;
  if delta > 0 then Liczba_Pierwiastkow := 2;

  case Liczba_Pierwiastkow of
    1 : begin
          x1 := -b/(2*a);
         end;
    2 : begin
          x1 := (-b-sqrt(delta))/(2*a);
          x2 := (-b+sqrt(delta))/(2*a);
        end;
  end;
end;

procedure trojmian.wyswietl_wynik();
begin
  Writeln('Dla wprowadzonych liczb:');
  Writeln('a = ',a:4:2,',');
  Writeln('b = ',b:4:2,',');
  Writeln('c = ',c:4:2, ',');
  case Liczba_Pierwiastkow of
    0 : Writeln('brak pierwiastkow rzeczywistych.');
    1 : begin
          Writeln('trojmian ma jeden pierwiastek podwojny x1 = ', x1:4:2, '.');
        end;
    2 : begin
          Writeln('trojmian ma dwa pierwiastki:');
          Writeln('x1 = ', x1:4:2,',');
          Writeln('x2 = ', x2:4:2,'.');
         end;
   end;
end;

var
  trojmian1:trojmian;

begin
  trojmian1:=trojmian.Create; // konstruktor
  trojmian1.czytaj_dane();
  trojmian1.przetworz_dane();
  trojmian1.wyswietl_wynik();
  trojmian1.Free; // destruktor

  Readln; // czeka na nacisniecie klawisza Enter
end.
